enum 枚举类
当我们定义一个枚举类时,我们使用关键字 enum。下面是一个简单的枚举类的示例:
enum Season {
SPRING,
SUMMER,
AUTUMN,
WINTER
}
在上面的示例中,我们定义了一个名为 Season 的枚举类,它包含了四个枚举值:SPRING、SUMMER、AUTUMN、WINTER。这些枚举值代表了四个季节。
你可以使用枚举值来表示特定的季节,例如:
Season currentSeason = Season.SUMMER;
System.out.println(currentSeason); // 输出 "SUMMER"
枚举类的每个枚举值都是该枚举类的一个实例,你可以像使用普通对象一样使用它们。你还可以为枚举值添加方法和属性,使其具有更多的功能。
enum的比较
在Java中,枚举类的比较可以使用"= ="运算符进行,这是因为枚举类的常量是唯一的,每个常量都是枚举类的一个实例。
例如,假设我们有一个名为"Day"的枚举类,其中包含了一周的所有天数作为常量:
enum Day {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
我们可以使用"= ="运算符来比较枚举类的常量,例如:
Day day1 = Day.MONDAY;
Day day2 = Day.TUESDAY;
if (day1 == day2) {
System.out.println("day1 and day2 are the same.");
} else {
System.out.println("day1 and day2 are different.");
}
上述代码将输出"day1 and day2 are different.",因为day1和day2是不同的枚举常量。
除了使用"= ="运算符进行比较外,还可以使用枚举类的"equals()"方法进行比较,它是从Object类继承而来的。例如:
if (day1.equals(day2)) {
System.out.println("day1 and day2 are the same.");
} else {
System.out.println("day1 and day2 are different.");
}
上述代码将输出"day1 and day2 are different.",与使用"= ="运算符的结果相同。
需要注意的是,枚举类的比较是基于枚举常量的引用进行的,而不是基于常量的值。因此,如果两个枚举常量的引用相同,它们被认为是相等的,即使它们的值不同。
enum 的name()方法
在Java中,枚举类提供了一个名为name()的方法,用于获取枚举实例的名称。该方法返回一个字符串,表示该枚举实例的名称。
例如,假设我们有一个名为Color的枚举类:
enum Color {
RED, GREEN, BLUE;
}
我们可以使用name()方法获取每个枚举实例的名称:
Color red = Color.RED;
System.out.println(red.name()); // 输出 "RED"
name()方法对于获取枚举实例的名称非常有用,但需要注意的是,它返回的是枚举常量的名称,而不是枚举常量的值。如果需要获取枚举常量的值,可以使用枚举类的其他方法或属性来实现。
enum 的 ordinal() 方法
在Java中,枚举类提供了一个名为ordinal()的方法,用于获取枚举实例的序号。该方法返回一个整数,表示该枚举实例在枚举类中的位置。
例如,假设我们有一个名为Color的枚举类:
enum Color {
RED, GREEN, BLUE;
}
我们可以使用ordinal()方法获取每个枚举实例的序号:
Color red = Color.RED;
System.out.println(red.ordinal()); // 输出 0
Color green = Color.GREEN;
System.out.println(green.ordinal()); // 输出 1
Color blue = Color.BLUE;
System.out.println(blue.ordinal()); // 输出 2
ordinal()方法返回的序号是从0开始的,按照枚举常量在枚举类中定义的顺序进行分配的。需要注意的是,ordinal()方法对于比较枚举实例的顺序是有用的,但在其他情况下应谨慎使用,因为它依赖于枚举常量的定义顺序,如果枚举常量的顺序发生变化,可能会导致代码出现错误。